Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

407
Visualizações
Advertencia CA2012 sobre el uso de ValueTask en Blazor. ¿Cómo implementar "disparar y olvidar" correctamente en Blazor?

IJSRuntime.InvokeVoidAsync() llamado como último paso en una ruta de código provoca la advertencia CA2012 (Use ValueTasks correctamente). ¿Se puede ignorar de forma segura o debo arreglarlo esperando?

Cuando agrego .Preserve() al final de mi llamada síncrona, la advertencia desaparece, el código funciona igual. ¿Porqué es eso? ¿Lo que sucede? ¿Qué hace este método? La documentación (del método Preserve() ) no está clara.

Quiero el uso de "disparar y olvidar" de un método que devuelve un ValueTask . ¿Cuál es la forma más correcta de lograrlo, llamándolo desde un método síncrono?

Para agregar algo de contexto, ejecuto JS desde mi código Blazor. No confío en los efectos causados por el código JS después de llamarlo. Por eso no lo espero. Puedo refactorizar mi código para esperar la ValueTask , pero ¿serviría para algún otro propósito además de hacer feliz al Code Analyzer?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Pero, ¿qué pasa con las llamadas de los controladores de eventos de la vieja escuela? Pueden ser, en el mejor de los casos async void

Los controladores de eventos de Blazor volvieron a la escuela y todos pueden ser async Task . El motor Razor sabe cómo lidiar con eso.

El único problema es con los eventos que no son de Blazor, como el evento Elapsed de un temporizador. Es posible que necesite async void allí.

Por ahora, mi idea es tratar de ir "asincronizado todo el camino".

Sí, ese es el camino a seguir.

La sincronización (no asíncrona) es una pequeña optimización para las rutas de código que no necesitan nada asíncrono. Por ejemplo, el método IncrementCount() (controlador de eventos) en el ejemplo de Counter.

pero, ¿serviría para algún otro propósito además de hacer feliz al Code Analyzer?

Ayudaría a Blazor a actualizar la interfaz de usuario después de que se complete la actualización. Un dispara y olvida tiene que hacer su propia lógica StateHasChanged() para uno.

Si realmente quieres f&f, _ = DoSomethingAsyncWithoutAwait();

InvokeAsync() envía su tarea al subproceso principal de la interfaz de usuario. Actualmente eso solo se aplica a Blazor Server. Solo es necesario cuando la tarea necesita actualizar la interfaz de usuario y, desde el código normal de Blazor, es mejor esperar. El ciclo de vida normal de Blazor no se bloqueará. Usarlo para evitar una advertencia no es óptimo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda